﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Lógica de interacción para MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            //Inicializo el dataset con datos del excel
            dataset = conexion("Hoja1");

            //inicio MainWindow
            InitializeComponent();
            
            //elimino dataset
            dataset.Dispose();
        }

        //Defino variables globales
        private string tipoEquipo;
        private string tipoFalla;
        private DataSet dataset;

        /**
         * Metodo que devuelve un dataset con el contenido de una hoja de una planilla Excel
         * */
        private DataSet conexion(string hoja)
        {
            //aca va la ruta del archivo excel
            var reader = new System.Configuration.AppSettingsReader();
            string pathFile = reader.GetValue("pathExcel",typeof(string)).ToString();

            //declaramos las variables         
            OleDbConnection conexion = null;
            DataSet dataSet = null;
            OleDbDataAdapter dataAdapter = null;
            string consultaHojaExcel = "Select * from [" + hoja + "$]";
            string cadenaConexionArchivoExcel = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + pathFile + "';Extended Properties=Excel 12.0;";

            //Validamos que el usuario ingrese el nombre de la hoja del archivo de excel a leer
            if (string.IsNullOrEmpty(hoja))
            {
                MessageBox.Show("No hay una hoja para leer");
                return null;
            }
            else
            {
                try
                {
                    //Si el usuario escribio el nombre de la hoja se procedera con la busqueda
                    conexion = new OleDbConnection(cadenaConexionArchivoExcel);//creamos la conexion con la hoja de excel
                    conexion.Open(); //abrimos la conexion
                    dataAdapter = new OleDbDataAdapter(consultaHojaExcel, conexion); //traemos los datos de la hoja y las guardamos en un dataSdapter
                    dataSet = new DataSet(); // creamos la instancia del objeto DataSet
                    dataAdapter.Fill(dataSet, hoja);//llenamos el dataset
                    conexion.Close();//cerramos la conexion
                    return dataSet;
                }
                catch (Exception ex)
                {
                    //en caso de haber una excepcion que nos mande un mensaje de error
                    MessageBox.Show("Error, Verificar el archivo o el nombre de la hoja: " + ex.Message);
                    return null;
                }
            }

        }

        private void btnERF_Click(object sender, RoutedEventArgs e)
        {
            //guardo el tipo de equipo
            tipoEquipo = "Refrigeracion Familiar";
            btnOpciones.Content = "Volver";
          
            borderppal.Visibility = Visibility.Hidden;
            borderFallas.Visibility = Visibility.Visible;
            

            int cantReg = dataset.Tables[0].Rows.Count;

            foreach (DataRow dr in dataset.Tables[0].Rows)
            {
                if (dr["Equipo"].ToString() == "Refrigeracion Familiar")
                {

                    if (!listBoxFallas.Items.Contains(dr["Falla"].ToString()))
                    {
                        listBoxFallas.Items.Add(dr["Falla"].ToString());
                        // comboBox1.Items.Add(dr["Falla"].ToString());
                    }

                }
            }
           // dataset.Dispose();
        }

        private void btnERC_Click(object sender, RoutedEventArgs e)
        {
            //guardo el tipo de equipo
            tipoEquipo = "Refrigeracion Comercial";
            btnOpciones.Content = "Volver";

            //DataSet dataset = conexion("Hoja1");

            borderppal.Visibility = Visibility.Hidden;
            borderFallas.Visibility = Visibility.Visible;

            int cantReg = dataset.Tables[0].Rows.Count;

            foreach (DataRow dr in dataset.Tables[0].Rows)
            {
                if (dr["Equipo"].ToString() == "Refrigeracion Comercial")
                {

                    if (!listBoxFallas.Items.Contains(dr["Falla"].ToString()))
                    {
                        listBoxFallas.Items.Add(dr["Falla"].ToString());
                        // comboBox1.Items.Add(dr["Falla"].ToString());
                    }
                }
            }

           // dataset.Dispose();
        }

        private void btnAA_Click(object sender, RoutedEventArgs e)
        {
            //guardo el tipo de equipo
            tipoEquipo = "Aire Acondicionado";
            btnOpciones.Content = "Volver";

            //DataSet dataset = conexion("Hoja1");

            borderppal.Visibility = Visibility.Hidden;
            borderFallas.Visibility = Visibility.Visible;

            int cantReg = dataset.Tables[0].Rows.Count;

            foreach (DataRow dr in dataset.Tables[0].Rows)
            {
                if (dr["Equipo"].ToString() == "Aire Acondicionado")
                {

                    if (!listBoxFallas.Items.Contains(dr["Falla"].ToString()))
                    {
                        listBoxFallas.Items.Add(dr["Falla"].ToString());
                        // comboBox1.Items.Add(dr["Falla"].ToString());
                    }
                }
            }

            //dataset.Dispose();
        }

        private void btnOpciones_Click(object sender, RoutedEventArgs e)
        {
            if (btnOpciones.Content.ToString() == "Volver")
            {
                if (borderCausas.Visibility.CompareTo(Visibility.Visible) == 0)
                {
                    //panelCausas.Visible = false;
                    borderCausas.Visibility = Visibility.Hidden;
                    borderFallas.Visibility = Visibility.Visible;
                    borderppal.Visibility = Visibility.Hidden;

                }
                else
                {

                    if (borderFallas.Visibility.CompareTo(Visibility.Visible) == 0)
                    {
                        borderCausas.Visibility = Visibility.Hidden;
                        borderFallas.Visibility = Visibility.Hidden;
                        borderppal.Visibility = Visibility.Visible;
                        btnOpciones.Content = "Salir";
                    }
                }
            }
            else
            {
                if (btnOpciones.Content.ToString() == "Salir")
                {
                    this.Close();
                }
            }
        }

        private void btnOE_Click(object sender, RoutedEventArgs e)
        {
            borderppal.Visibility = Visibility.Hidden;
            borderFallas.Visibility = Visibility.Hidden;
            borderCausas.Visibility = Visibility.Visible;
            tipoFalla = listBoxFallas.SelectedItem.ToString();

            llenarListBoxCausas();
            
            
        }

        private void btnOM_Click(object sender, RoutedEventArgs e)
        {
            borderppal.Visibility = Visibility.Hidden;
            borderFallas.Visibility = Visibility.Hidden;
            borderCausas.Visibility = Visibility.Visible;
            tipoFalla = listBoxFallas.SelectedItem.ToString();

            llenarListBoxCausas();
        }

       

       private void llenarListBoxCausas()
       {
           
           var names = (from DataRow dr in dataset.Tables[0].Rows
                        where dr["Equipo"].ToString() == tipoEquipo && dr["Tipo"].ToString() == "Electrico" && dr["Falla"].ToString() == tipoFalla
                        //orderby (string)dr["Falla"]
                        select dr["Causa"]).Distinct();


           listBoxCausas.Items.Clear();
           foreach (string name in names)
           {
               listBoxCausas.Items.Add(name.ToString());
           }
       }


       

        
    }
}
